package com.zkthink.ceres.pay.wechat.v3.entity.request.applyments;

import com.alibaba.fastjson.annotation.JSONField;
import lombok.*;
import lombok.experimental.Accessors;

import java.io.Serializable;

/**
 * <p>
 * 支付者信息
 * </p>
 *
 * @author vivi.huang
 * @since 2020/5/17
 */
@Data
@EqualsAndHashCode()
@Builder(builderMethodName = "newBuilder")
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class AccountInfo implements Serializable {


    private static final long serialVersionUID = 8451036970675370424L;


    /**
     * 账户类型	bank_account_type	string(2)	是	1、若主体为企业/党政、机关及事业单位/其他组织，可填写：74-对公账户。
     * 2、主体为“小微/个人卖家”，可选择：75-对私账户。
     * 3、若主体为个体工商户，可填写：74-对公账户、75-对私账户。
     * 示例值：75
     */
    @JSONField(name = "bank_account_type")
    private String bankAccountType;

    /**
     * 开户银行	account_bank	string(10)	是	详细参见开户银行对照表。
     * 示例值：工商银行
     */
    @JSONField(name = "account_bank")
    private String AccountBank;

    /**
     * 开户名称	account_name	string(128)	是	1、选择经营者个人银行卡时，开户名称必须与身份证姓名一致。
     * 2、选择对公账户时，开户名称必须与营业执照上的“商户名称”一致。
     * 3、该字段需进行加密处理，加密方法详见敏感信息加密说明。(提醒：必须在HTTP头中上送Wechatpay-Serial)
     * 示例值：AOZdYGISxo4yw96uY1Pk7Rq79Jtt7+I8juwEc4P4TG5xzchG/5IL9DBd+Z0zZXkw==
     */
    @JSONField(name = "account_name")
    private String accountName;

    /**
     * 开户银行省市编码	bank_address_code	string(12)	是	至少精确到市，详细参见省市区编号对照表。
     * 示例值：110000
     */
    @JSONField(name = "bank_address_code")
    private String bankAddressCode;

    /**
     * 开户银行联行号	bank_branch_id	string(64)	条件选填	1、17家直连银行无需填写，如为其他银行，开户银行全称（含支行）和开户银行联行号二选一。
     * 2、详细参见开户银行全称（含支行）对照表。
     * 示例值：402713354941
     */
    @JSONField(name = "bank_branch_id")
    private String bankBranchId;

    /**
     * 开户银行全称 （含支行)	bank_name	string(128)	条件选填	1、17家直连银行无需填写，如为其他银行，开户银行全称（含支行）和开户银行联行号二选一。
     * 2、需填写银行全称，如"深圳农村商业银行XXX支行" 。
     * 3、详细参见开户银行全称（含支行）对照表。
     * 示例值：施秉县农村信用合作联社城关信用社
     */
    @JSONField(name = "bank_name")
    private String bankName;

    /**
     * 银行帐号	account_number	string(128)	是	1、数字，长度遵循系统支持的对公/对私卡号长度要求表。
     * 2、该字段需进行加密处理，加密方法详见敏感信息加密说明。(提醒：必须在HTTP头中上送Wechatpay-Serial)
     * 示例值： d+xT+MQCvrLHUVDWv/8MR/dB7TkXLVfSrUxMPZy6jWWYzpRrEEaYQE8ZRGYoeorwC+w==
     */
    @JSONField(name = "account_number")
    private String accountNumber;

}